﻿// ***********************************************************************
// Apache 2.0 License
// Licensed under the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License. You may obtain
// a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
//
// THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
// ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY 
// IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR 
// PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT.
//
// See the Apache Version 2.0 License for specific language governing
// permissions and limitations under the License.
// ***********************************************************************
// Assembly  : ContractMeow.Api.Dtos
// File      : IFileAttachment.cs
//
// ***********************************************************************
using System;

namespace ContractMeow.Api.Dtos.Attachment
{
	/// <summary>
	/// Interface IFileAttachment
	/// </summary>
	public interface IFileAttachment : IAttachment
	{
		/// <summary>
		/// Gets or sets the content class.
		/// </summary>
		/// <value>The content class.</value>
		string ContentClass { get; set; }

		/// <summary>
		/// Gets or sets the type of the content.
		/// </summary>
		/// <value>The type of the content.</value>
		string ContentType { get; set; }

		/// <summary>
		/// Gets or sets the download URL.
		/// </summary>
		/// <value>The download URL.</value>
		Uri DownloadUrl { get; set; }

		/// <summary>
		/// Gets or sets the file.
		/// </summary>
		/// <value>The file.</value>
        File File { get; set; }

		/// <summary>
		/// Gets or sets the full name.
		/// </summary>
		/// <value>The full name.</value>
        string FullName { get; set; }

		/// <summary>
		/// Gets or sets the is official.
		/// </summary>
		/// <value>The is official.</value>
        Boolean IsOfficial { get; set; }
		
		/// <summary>
		/// Gets or sets the is public.
		/// </summary>
		/// <value>The is public.</value>
        Boolean IsPublic { get; set; }

		/// <summary>
		/// Gets or sets the large icon URL.
		/// </summary>
		/// <value>The large icon URL.</value>
        Uri LargeIconUrl { get; set; }

		/// <summary>
		/// Gets or sets the last uploaded at.
		/// </summary>
		/// <value>The last uploaded at.</value>
        DateTimeOffset LastUploadedAt { get; set; }

		/// <summary>
		/// Gets or sets the last uploaded by id.
		/// </summary>
		/// <value>The last uploaded by id.</value>
        long LastUploadedById { get; set; }

		/// <summary>
		/// Gets or sets the last type of the uploaded by.
		/// </summary>
		/// <value>The last type of the uploaded by.</value>
        string LastUploadedByType { get; set; }

		/// <summary>
		/// Gets or sets the name of the original.
		/// </summary>
		/// <value>The name of the original.</value>
        string OriginalName { get; set; }

		/// <summary>
		/// Gets or sets the overlay URL.
		/// </summary>
		/// <value>The overlay URL.</value>
        Uri OverlayUrl { get; set; }

		/// <summary>
		/// Gets or sets the owner id.
		/// </summary>
		/// <value>The owner id.</value>
        long OwnerId { get; set; }

		/// <summary>
		/// Gets or sets the type of the onwer.
		/// </summary>
		/// <value>The type of the onwer.</value>
        string OwnerType { get; set; }

		/// <summary>
		/// Gets or sets the path.
		/// </summary>
		/// <value>The path.</value>
        string Path { get; set; }

		/// <summary>
		/// Gets or sets the preview URL.
		/// </summary>
		/// <value>The preview URL.</value>
        Uri PreviewUrl { get; set; }

		/// <summary>
		/// Gets or sets the type of the real.
		/// </summary>
		/// <value>The type of the real.</value>
		string RealType { get; set; }
		
		/// <summary>
		/// Gets the size.
		/// </summary>
		/// <value>The size.</value>
		long Size { get; }	

		/// <summary>
		/// Gets or sets the small icon URL.
		/// </summary>
		/// <value>The small icon URL.</value>
        Uri SmallIconUrl { get; set; }

		/// <summary>
		/// Gets or sets the streaming URL.
		/// </summary>
		/// <value>The streaming URL.</value>
        Uri StreamingUrl { get; set; }

		/// <summary>
		/// Gets or sets the transcoded.
		/// </summary>
		/// <value>The transcoded.</value>
        Boolean? Transcoded { get; set; }

		/// <summary>
		/// Gets or sets the UUID.
		/// </summary>
		/// <value>The UUID.</value>
        string Uuid { get; set; }

		/// <summary>
		/// Gets or sets the Y id.
		/// </summary>
		/// <value>The Y id.</value>
        long YId { get; set; }

		Uri ThumbnailUrl { get; set; }
	}
}
